<?php

//读取目录下的文本文件=============================================================================
function read_file($path){
    return file_get_contents(__DIR__ . '/../../' . $path);
}

//生成验证码,支付赋值给前端的<img src>即可（安装 composer require webman/captcha）=============================================================================
function captcha_generate(){
    $length = 4;
    $chars = '0123456789abcefghijklmnopqrstuvwxyz';
    $captcha = new Webman\Captcha\CaptchaBuilder(null, new Webman\Captcha\PhraseBuilder($length, $chars));
    $captcha->build();
    session_set('captcha', strtolower($captcha->getPhrase()));
    $img_content = $captcha->get();
    return response($img_content, 200, ['Content-Type' => 'image/jpeg']);
}

//验证码校验（安装 composer require webman/captcha）
function captcha_verify($code){
    if(strtolower($code) !== session_get('captcha')){
        return false;
    }
    return true;
}

//Session (仅适用于Webman)=====================================================================================================================================
function session_set($key, $value){
    request()->session()->set($key, $value);
}

function session_get($key){
    return request()->session()->get($key);
}

function session_del($key){
    request()->session()->forget($key);
}

//获取客户端IP=============================================================================================================================
function client_ip(){
    $ipport = request()->header('x-forwarded-for');
    if($ipport){
        $arr = explode(':', $ipport);
        return $arr[0];
    }
    $realIP = request()->getRealIp();
    if($realIP){
        return $realIP;
    }
    return request()->getRemoteIp();
}

//获取当前http协议、域名、完整地址=============================================================================================================================
function protocol(){
    //该方法仅针对做反向代理后获取不到域名的解决办法：有道笔记搜“反向代理”
    return (request()->header('x-protocol') == 'on') ? 'https:' : 'http:';
}

function host(){
    //该方法仅针对做反向代理后获取不到域名的解决办法：有道笔记搜“反向代理”
    $request = request();
    return $request->header('x-original-host') ?? $request->host();
}

function url(){
    //该方法仅针对做反向代理后获取不到域名的解决办法：有道笔记搜“反向代理”
    $request = request();
    $protocol = ($request->header('x-protocol') == 'on') ? 'https:' : 'http:';
    $host = $request->header('x-original-host');
    $url = $request->header('x-original-url');
    if(!empty($host) && !empty($url)){
        return $protocol . '//' . $host . $url;
    }else{
        return $protocol . $request->fullUrl();
    }
}

//接收Get或Post参数（二者都兼容）===========================================================================================================
function param($key, $default = ''){
    $post = request()->post();
    if(isset($post[$key]) && $post[$key] != ''){
        return $post[$key];
    }
    $get = request()->get();

    if(isset($get[$key]) && $get[$key] != ''){
        return $get[$key];
    }
    return $default;
}

function params(){
    $params = request()->all();
    unset($params['r']);
    return $params;
}